教你用ggtree绘制高颜值进化树
图片来源:http://dx.doi.org/10.1128/AEM.02307-16
图片来源:http://journal.frontiersin.org/article/10.3389/fmicb.2017.00543/full
图片来源:http://journal.frontiersin.org/article/10.3389/fmicb.2017.00456/full
上述所有高大上的树状图都是由同一个软件包做出来的——“ggtree”。ggtree是基于R的强大的树状图修饰工具,支持多种格式的输入文件并与其他R包兼容,可以轻松地实现对树状图的各种后期加工、修饰与美化。让你分分钟做出高大上的树状图,助力你发表TOP期刊,走上人生巅峰,赢取CNS......
本期我们有幸邀请到ggtree的开发者Y叔撰文,通过一个有趣的实例来与大家一瞥ggtree的强大功能~
phylomoji本来是像上图这么玩的,也就是纯文本慢慢点,调整线条位置。当然纯手工有纯手工的乐趣,不过纯手工很多效果搞不来,比如你搞个circular layout的树来试试,绝对搞不出来。然而我们有ggtree和emojifont啊,这些都小事一桩。
Phylomoji
下面这个tree_text是正常的nwk格式,只需要传parse=”emoji”给geom_tiplab,见证神奇的时刻就到了。
library(ggtree)
tree_text <- "(((((cow, (whale, dolphin)), (pig2, boar)), camel), fish)
, seedling);"
x <- read.tree(text=tree_text)
ggtree(x, linetype="dashed", color='firebrick') +
xlim(NA, 7) + ylim(NA, 8.5) +
geom_tiplab(aes(color=label), parse='emoji', size=14, vjust=0.25) +
labs(title="phylomoji", caption="powered by ggtree + emojifont")
p <- ggtree(x, layout='circular') +
geom_tiplab2(aes(color=label), parse='emoji', size=12, vjust=0.25)
print(p)
要画环形树也是同样简单!
这个环形树可以随意指定开口角度,转变成扇子型状!
open_tree(p, angle=200)
还能随意旋转!
open_tree(p, angle=60) %>% rotate_tree(-75)
注释clades
这个也是同样简单,同样也是parse=”emoji”产生奇迹。
set.seed(123)
tr <- rtree(30)
ggtree(tr) + xlim(NA, 5) +
geom_cladelabel(node=41, label="chicken", parse="emoji",
fontsize=12, align=TRUE, color="firebrick") +
geom_cladelabel(node=51, label="duck", parse="emoji",
fontsize=12, align=TRUE, color="steelblue") +
geom_cladelabel(node=32, label="family", parse="emoji",
fontsize=12, align=TRUE, color="darkkhaki")
Apple Color Emoji
用苹果的emoji也是可以的,不过得产生为svg图形,在safari里打开:
library(ggimage)
library(gridSVG)
p <- ggtree(x, size=2) + geom_tiplab(size=20, parse='emoji') +
xlim(NA, 7) + ylim(NA, 8.5) +
geom_phylopic(image="79ad5f09-cf21-4c89-8e7d-0c82a00ce728",
color="firebrick", alpha = .3, size=Inf)
p
ps = grid.export("emoji.svg", addClass=T)
References
Yu, Guangchuang, David Smith, Huachen Zhu, Yi Guan, and Tommy Tsan-Yuk Lam. 2017. “.” Methods in Ecology and Evolution 8 (1): 28–36. doi:.
作者简介:
余光创,香港大学公共卫生学院博士生,目前已开发过多个R/Bioconductor包,包括ggtree、ChIPseeker、clusterProfiler、DOSE、GOSemSim和ReactomePA等。
本期内容仅是抛砖引玉,想了解更多ggtree在学术上的应用及其他相关R包的用法,或者想与作者本人交流,请扫描下方二维码,关注Y叔原创公众号~
“科学思想值得传播”,这里是“微生物生态”。欢迎个人转载,公众号转载请在后台留言获得许可~
本期编辑:李小圆 卢瑟菌
本期校稿: 坚果儿